'''
案例二 如果我有多个线程同时对数据修改，听谁的
'''
import threading,time
mun = 0
def run(n):
    global mun
    for i in range(1000000):
        mun += n
        mun -= n
if __name__ == '__main__':
    t1 = threading.Thread(target=run,args=(5,))
    t2 = threading.Thread(target=run, args=(9,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    print('mun = ',mun) #结果会乱，本来应该mun加一个数，减去一个数，应该等于0，但是
    #这里应为有两个线程同时对mun修改，所以需要加锁

'''
解决:加锁  
一个线程在操作数据时，别的线程不允许对数据操作
加锁了，就只能进去一个线程
'''
#定义一个锁
'''
Lock = threading.Lock()
'''
#语法：    对数据自动上锁，自动解锁
'''
  with Lock:
        mun += n
        mun -= n
        '''
